Data sharing tool for facilitating real-time access to current or updated datasets

ABSTRACT

In some embodiments, a data server generates an open data reference specifying a location for storing report data associated with a report. To generate the report data, the data server generates a data query based on a report definition that describes how the report data associated with the report is generated. The data server executes the data query on source data to obtain the report data and causes the report data to be stored on a storage device at the location specified by the open data reference. The report data can be retrieved via a network using the open data reference for integration within a third-party application. The data server further generates updated report data by executing, on the source data, an updated data query generated based on the report definition and has the report data stored on the storage device to be replaced with updated report data.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.16/414,116, filed on May 16, 2019, now allowed, the contents of all ofwhich are incorporated herein by reference.

TECHNICAL FIELD

This disclosure relates generally to facilitating data sharing amongdifferent computing systems. More specifically, but not by way oflimitation, this disclosure relates to providing a data sharing toolthat allows various computing systems to openly and publicly access databeing continuously updated.

BACKGROUND

The fast development of technologies such as the Internet technology,cloud computing technology, Internet of Things (IoT), and digitalstorage technology allows for the production and storage of a massiveamount of data every day by businesses and users. This massive amount ofdata contains valuable information that is helpful for organizations tomake informed decisions on, for example, how to improve systemperformance, user experiences and so on. However, the large volume ofthe data makes it very difficult to extract that valuable information.

Various data analysis tools and systems have been developed to extract,from large and diverse data sets, hidden patterns, unknown correlations,and other insights. These kinds of valuable information can be usefulfor multiple organizations and in various different applications. Forexample, an organization can incorporate the analytical results in itsproprietary application developed to solve the unique problems of theorganization. Thus it is important for a data analysis system to supportsharing the analytical results with different applications in differentcomputing systems at different network locations.

However, sharing data analytical results is a challenging task. One ofthe reasons is the dynamic nature of the analytical results. As new datais collected and analyzed, these analytical results are updateddynamically, and thus the shared copy obtained by another application orsystem would also need to be updated in order to make the sharedinformation meaningful. Existing methods are insufficient to addressthis challenge. For example, some existing methods rely on complicatedAPI calls from destination applications to data servers to re-generatequeries used during the data analysis process to obtain analyticalresults. Such methods require software engineers to have knowledge ofthe API interfaces. Further, the implementation of the API calls can getvery complicated when authentication is required by the data servermanaging the shared data. As a result, these existing data sharingmethods are inefficient, inflexible and unscalable.

SUMMARY

Certain embodiments involve facilitating real-time access to current orupdated datasets by using an open data reference for sharing dataanalytical results. In one example, a data server generates an open datareference specifying a location for storing report data associated witha report. To generate the report data, the data server generates a dataquery based on a report definition that describes how the report dataassociated with the report is generated. The data server executes thedata query on source data stored in a data store to obtain the reportdata and causes the report data returned by the query to be stored on astorage device at the location specified by the open data reference. Thereport data is retrievable via a network using the open data referencefor integration within a third-party application. The data serverfurther generates updated report data by executing, on the source data,an updated data query generated based on the report definition of thereport and has the report data stored on the storage device to bereplaced with updated report data.

These illustrative embodiments are mentioned not to limit or define thedisclosure, but to provide examples to aid understanding thereof.Additional embodiments are discussed in the Detailed Description, andfurther description is provided there.

BRIEF DESCRIPTION OF THE DRAWINGS

Features, embodiments, and advantages of the present disclosure arebetter understood when the following Detailed Description is read withreference to the accompanying drawings.

FIG. 1 depicts an example of a computing environment in which a dataserver and a data analysis application are coordinated to provide anopen data reference for sharing data with a third party application,according to certain embodiments of the present disclosure.

FIG. 2 depicts an example of a process for generating an open datareference that can be utilized to retrieve shared report data, accordingto certain embodiments of the present disclosure.

FIGS. 3A-3C depict examples of flow diagrams that show interactionsbetween various entities involved in the data sharing process, accordingto certain embodiments of the present disclosure.

FIG. 4 depicts an example of a data structure for open data referencerecords established and used in maintaining the open data reference,according to certain embodiments of the present disclosure.

FIG. 5 depicts an example of a user interface for presenting report datain reports and generating an open data reference for the report data,according to certain embodiments of the present disclosure.

FIG. 6 depicts an example of a user interface for utilizing an open datareference to retrieve report data for integration into a third-partyapplication, according to certain embodiments of the present disclosure.

FIG. 7 depicts an example of a computing system for implementing certainembodiments of the present disclosure.

DETAILED DESCRIPTION

Certain embodiments involve facilitating real-time access to current orupdated datasets, e.g., by using an open data reference for sharing dataanalytical results. For instance, a data server communicates with a dataanalysis application that is executing on a client computing device andis configured to generate analytical results on source data. Responsiveto a request to share analytical results, the data server generates anopen data reference for the analytical results, such as a uniformresource locator (URL) link, specifying a location of the analyticalresults that are to be shared with other applications. The data serverfurther generates a query based on a report definition of the analysisreport received from the data analysis application. The reportdefinition describes how the analytical results associated with theanalysis report is generated. By executing the query on the source data,the data server obtains the analytical results and has the analyticalresults stored at the location specified by the open data reference.Third-party applications having possession of the open data referencecan directly retrieve the analytical results of the report through theopen data reference without additional operations.

The following non-limiting example is provided to introduce certainembodiments. In this example, a data analysis application executes on aclient computing device and is configured for generating analysisreports to perform analysis on source data to obtain analytical results.Through the data analysis application, a user can submit a request toshare the analytical results, also referred to herein as “report data.”Responsive to the request, the data analysis application communicateswith a data server and sends a data sharing request. Based on the datasharing request, the data server generates an open data reference thatspecifies the location for storing a copy of the report data to beshared and the tool for retrieving it.

For example, the open data reference can be a URL link that specifiesthe storage location of the report data. The data server selects thestorage location and generates the open data reference based on factorssuch as the availability and capacity of the storage device used forstoring the report data, the network location of the storage device, andso on. To maintain the information about the open data reference, thedata server also creates an open data reference record. The open datareference record stores information such as an identification of thereport, the open data reference, and an identification of the user whorequested the open data reference.

According to further aspects of this example, the data server alsoreceives, and stores in the open data reference record, a reportdefinition of the analysis report. The data server further generates aquery according to the report definition and executes the query on thesource data to generate the report data. The data server sends thegenerated report data to the storage location as specified in the opendata reference. The storage location can be network storage separatefrom the data server and configured for storing and sharing a largeamount of data, such as a cloud storage. The data server periodicallyupdates the report data by re-generating the query and executing thequery on the source data to obtain the most recent report data. The mostrecent report data is sent to the storage location to replace theexisting report data stored thereupon. In this way, the open datareference always points to the most recent report data. The data serversends the open data reference to the data analysis application where theopen data reference is presented to the user for sharing withthird-party applications. By following the open data reference,third-party applications can retrieve the most current report data.

If the user who requested the open data reference decides to stopsharing the report data, the data server deletes the open data referencerecord and causes the report data stored at the specified storagelocation to be removed. In this way, third-party applications can nolonger access the report data even though they still have the open datareference. If later on the user decides to re-activate the open datareference, the data server generates the same data reference as beforeand re-creates the open data reference record. The data server generatesand updates the report data as described above so that third-partyapplications can retrieve the shared report data using the same opendata reference.

As described herein, certain embodiments provide improvements to datasharing in computing environments. These embodiments provide a tool thatallows complicated and up-to-date data analytical results to be sharedwith third-party applications efficiently and making complex analyticalresults more accessible by providing familiar, user-friendly open datareferences, such as a URL, to retrieve analytical results whilecircumventing the arduous process of programming, testing, andimplementing complex commands. Specifically, the data sharing toolprovided herein utilizes an open data reference directly pointing to alocation where a copy of the most recent data analytical results isstored. Compared with existing methods, certain embodiments providedherein eliminate the need of implementing and invoking an API foranalyzing the data thereby eliminating the network communicationsbetween the third-party applications calling the API and the data serverhosting the API. Additionally or alternatively, certain embodimentsreduce the computational resource consumption at the data serverincurred by responding to the API calls. Additionally or alternatively,certain embodiments, by storing a copy of the analytical results in astorage device separate from the data server, can easily scale up thedata sharing described herein to support a large number of third-partyapplications. This also improves the security of the data server byeliminating direct communications between third-party applications andthe data server.

As used herein, the term “source data” is used to refer to raw data orprocessed data generated by businesses and users through variouscomputing environments. For example, the source data can include thedata collected from a website that describes user activities, behaviors,or interactions with the website, such as the web links that a userclicked through, or the time a user spent on a certain web page. Inaddition, the source data can include the data describing theperformance of a website or a web server hosting the website, such asthe number of client computers connected to the web server, loading timeof web pages of the website, response time to a user click, and so on.The source data are updated periodically to include new data that arebeing generated in the computing environments.

As used herein, the term “analysis report” or “report” is used to referto data associated with a data analysis task, such as a description ofthe data analysis task, the analytical results and the visualization ofthe analytical results. The description of the data analysis taskincludes various information required to carry out an analysis task. Forexample, the report can include a report definition describing howsource data is to be analyzed to generate analytical results, alsoreferred to as “report data.” A report also includes or defines the waythat the report data is to be presented in a user interface. Forexample, a report can be a summary report used to generate and presentdata designed for quick overviews, such as the total number of visitorsto a website. A report can also be a detailed report providingcomprehensive, accurate, and detailed analysis of the relevant sourcedata.

As used herein, the term “report definition” is used to refer to thedescription of how the analysis task associated with a report is to becarried out. In other words, the report definition describes how theanalytical results for the report are generated. For example, the reportdefinition can include criteria or business rules that need to besatisfied in order to generate the correct results. The reportdefinition can further include a description of the ways or steps togenerate queries for the report based on these criteria and businessrules so that analytical results can be obtained by executing thequeries on the source data.

As used herein, the term “report data” is used to refer to theanalytical results generated by analyzing the source data according tocriteria or business rules included in the report definition of thecorresponding report. For example, the report data for a report can beobtained by executing queries generated based on the report definitionof the report.

As used herein, the term “open data reference” is used to refer to areference to shared data that specifies the location of the shared dataand a tool for retrieving it. In one example, the open data referenceincludes the network address of the storage device used for storing thereport data, a location of the report data within the storage space ofthe storage device, and a protocol used for retrieving the report data.For example, an open data reference can be a URL link such as“https://account123.blob.core.windows.net/opendata/1d4e1rq4e1f4s1d4f.csv.”Through this URL link, a third-party application or a third-partycomputing device can directly retrieve the shared data with a file name“1d4e1rq4e1f4s1d4f.csv” from the host “account123.blob.core.windows.net”using the hypertext transfer protocol secure (HTTPS).

Referring now to the drawings, FIG. 1 is an example of a computingenvironment 100 in which a data server 112 and a data analysisapplication 104 coordinate with each other to support data sharing,according to certain embodiments of the present disclosure. In variousembodiments, the computing environment 100 includes a client computingdevice 102 executing the data analysis application 104, the data server112, and a data store 118 accessible by the data server 112 andconfigured to store source data 122 and other data such as the open datareference records 116. The computing environment 100 further includes acloud storage 124 that is configured to store the data to be shared andis separate from the data server 112 and the data store 118.

The data analysis application 104 executed on the client computingdevice 102 is configured to provide functionalities for analyzing thesource data 122. In one example, the data analysis application 104 isconfigured to allow a user of the data analysis application 104 tocreate a report for analyzing the source data 122. In one example, thereport includes a report definition 110 describing how source data 122is to be analyzed to generate analytical results, i.e. the report data120 associated with the report.

For example, the report definition 110 includes criteria or businessrules that can be used to generate the correct results. The reportdefinition 110 can further include a description of the ways or steps togenerate queries for the report based on these criteria and businessrules. Analytical results can be obtained by executing the queries onthe source data. The report definition 110 can be written in any fileformat, such as a JavaScript Object Notation (JSON) file format,Extensible Markup Language (XML) format, and so on. The report can alsoinclude or define the way that the report data 120 is to be presented ina user interface. FIG. 5 shows an example of a user interface forpresenting the report data 120 associated with various reports, such asa report on top referring domains, a report on top landing pages, areport on visits over time, and so on.

In order to obtain the report data 120, the data analysis application104 generates one or more data queries 114 based on the reportdefinition 110. The data queries 114 define the relevant data and theanalysis, calculation or other operations to be performed on therelevant data in order to generate the report data 120. For example, ifthe report is a summary report for determining the number of users whovisited a website in the past 10 minutes, the data analysis application104 generates a data query to retrieve, from the source data 122,visitor data of the website for the past 10 minutes and then calculatesthe total number of visitors for the report. The data analysisapplication 104 sends the generated queries 114 to the data server 112which in turn executes the queries 114 on the source data 122 to obtainthe report data 120. The data server 112 returns the report data 120 tothe data analysis application 104 for display.

As new data are collected and included in the source data 122, the dataanalysis application 104 periodically updates the data queries 114 tohave the data server 112 to generate updated report data 120. In theabove example, the data analysis application 104 can be configured torepeat the process of generating and executing the data query everyminute to keep the generated total number of visitor in the past 10minutes up to date.

In some implementations, the data analysis application 104 utilizes amodel code 106 and executes the model code 106 to generate the dataqueries 114 for a report. The model code 106 can be written in anyprogramming language that is executable in a software environmenthosting the data analysis application 104. For example, if the dataanalysis application 104 is a web-based application, the model code 106can be written using JavaScript language that can be executed in a webbrowser of the client computing device 102. Depending on the softwareenvironment where the data analysis application 104 is executed,different programming languages can be utilized to build the model code106.

Because the report data 120 contains valuable information and insights,it is beneficial to share the report data 120 with other applications orother computing devices. According to certain embodiments presentedherein, sharing the report data 120 can be achieved using an open datareference 108. The open data reference 108 specifies the location of theshared report data 120 and a tool for retrieving it. For example, theopen data reference can be a URL link such as“https://account123.blob.core.windows.net/opendata/1d4e1rq4e1f4s1d4f.csv.”Through the URL link, a third-party application or a third-partycomputing device can directly retrieve the shared data with a file name“1d4e1rq4e1f4s1d4f.csv” from the host “account123.blobcore.windows.net”using the hypertext transfer protocol secure (HTTPS).

In some examples, a user of the data analysis application 104 requeststo generate the open data reference 108 for data sharing. For example,the data analysis application 104 can be configured to present a userinterface through which the user can request the open data reference 108for the report data 120 to be shared. An example of the user interfacefor requesting the open data reference 108 is shown in FIG. 5 . Uponreceiving the user request, the data analysis application 104communicates with the data server 112 to allow the report data 120specified in the user request to be shared through an open datareference 108.

The data analysis application 104 can generate the open data reference108 for the report data 120 and send it along with a data sharingrequest to the data server 112 to have the shared report data 120 storedat the specified location. Alternatively, the data analysis application104 can send a data sharing request to the data server 112 to requestthe generation of the open data reference 108 and the provision of theshared report data 120. In the latter case, the data server 112generates the open data reference 108 and returns it to the dataanalysis application 104 so that it can be shared with otherapplications or devices. In either case, the data analysis application104 or the data server 112 generates the open data reference 108 byhashing data such as the report identification, the user identification,and other information. The generated hash value can be used, forexample, as the file name of the report data. Hashing can be performedusing any existing hashing algorithm.

The data analysis application 104 further sends the report definition110 to the data server 112 along with with or through the data sharingrequest 134. In some configurations, the data server 112 also has a copyof the model code 106 that resides on the client computing device 102.The data server 112 executes the model code 106 based on the reportdefinition 110 to generate the data queries 114 used to generate thereport data 120. In the above example where the model code 106 iswritten in JavaScript executable in a web browser of the clientcomputing device 102, the data server 112 can be configured with aNode.js JavaScript run-time environment so that the model code 106written in JavaScript can be executed outside of a web browser. If thereport definition 110 is changed in the data analysis application 104,the updated report definition 110 is also sent to the data server 112 sothat the data server 112 operates on the most recent report definition110.

Sending the report definition 110 to the data server 112 allows the dataserver 112 to generate the report data 120 independently of the dataanalysis application 104. In other words, the data server 112 cangenerate the report data 120 even if the data analysis application 104is not executing on the client computing device 102. Further, having thereport definition 110, the data server 112 is able to generate the mostrecent data queries 114 thereby generating the most recent report data120. This is especially useful if data queries are dynamic and change asthe situations at the time of query change. For example, for a reportshowing website performance metrics for the past three days, a reportgenerated on Apr. 5, 2019, needs a data query specifying a date range ofApril 2 to April 4 to retrieve and analyze the website performancemetric. On Apr. 6, 2019, however, the same query cannot be used becausethe data range of April 2 to April 4 is no longer the past three days ofthe current date. Instead, a new query specifying a date range of April3 to April 5 needs to be generated and used. In other scenarios wherethe data queries 114 are static, the data analysis application 104 canbe configured to send the data queries 114, instead of the reportdefinition 110, to the data server 112 in order to generate the reportdata 120.

For each open data reference 108, the data server 112 creates an opendata reference record 116 to maintain the open data reference 108 andother information associated with the open data reference 108. Forexample, the open data reference record 116 can include theidentification of the report for which the open data reference 108 iscreated, and the identification of the user who requested the open datareference 108. The open data reference record 116 can further includethe report definition 110 used for generating the data queries 114, orthe data queries 114 themselves if no report definition 110 is sent tothe data server 112.

The data server 112 executes the data queries 114 on the source data 122to generate the report data 120 to be shared. The data server 112 sendsthe report data 120 to a storage device that is accessible byapplications or computing devices having possession of the open datareference 108. In one example, the report data 120 is stored in a cloudstorage 124 that is separate from the data server 112. By separating thestorage location of the shared report data 120 and the data server 112,the operational burden on the data server 112 can be significantlyreduced because the network traffic requesting the shared report data120 is directed to the cloud storage 124 rather than the data server112. Further, cloud storage 124 can be optimized for retrieval speed andreliability, reducing the response speed and error rate associated withthe retrieval of the report data. As the number of reports having sharedreport data 120 increases, this configuration also allows the system fordata sharing to be easily scaled up. For example, the data server 112can allocate the shared report data for different reports on differentcloud storages.

In one example, the cloud storage 124 is storage provided by a cloudprovider such as the blob storage offered by MICROSOFT AZURE developedby MICROSOFT Corporation from Redmond, Wash., USA. The blob storageallows arbitrarily large amounts of unstructured data to be stored andserve them to users over HTTP and HTTPS. Although FIG. 1 shows thatcloud storage 124 is utilized for storing and sharing the report data120, other types of storage devices can also be utilized. For example,the report data 120 can be stored in the data store 118 managed by thedata server 112, or another storage device managed by a separate storageserver.

In addition, due to the dynamic nature of the source data 122 and thereport, the source data 122 periodically executes the model code 106 togenerate updated data queries 114 and in turn to obtain the updatedreport data 120. The updated report data 120 is sent to the cloudstorage 124 to replace the report data 120 stored thereupon. As aresult, the report data 120 stored on the cloud storage 124 is kept upto date and reflects the most recent changes in the report data 120. Inone example, the data server 112 updates the report data 120 every 5minutes. In another example, updating the report data 120 is triggeredby certain events as specified by the user or by the data server 112,such as an unexpected power outage at the data server 112, a specifictime on a specific day has arrived, and so on.

To share the report data 120, the user requesting the data sharing cansend the open data reference 108 to any device or application with whichhe or she desires to share the report data 120. For example, the usercan use the data analysis application 104 or another application, suchas an email application or a messaging application, to share the opendata reference 108 with multiple third-party applications 128A-128B(which may be referred to herein individually as a third-partyapplication 128 or collectively as the third-party applications 128).These third-party applications 128 can include other applicationsexecuting on the client computing device 102 or those applicationsexecuting on computing devices different from the client computingdevice 102 such as the third-party devices 130A-130B shown in FIG. 1 .For example, the third-party applications 128 can include MICROSOFTEXCEL, GOOGLE SPREADSHEETS, third-party charting libraries, commandlines, MICROSOFT POWER BI, HTML widgets and others. Following theinformation provided in the open data reference 108, each of thethird-party applications 128 identifies the cloud storage 124 hostingthe report data 120 and communicates with the cloud storage 124 toretrieve the report data 120 using the proper protocol.

If the user decides to deactivate the open data reference 108 for areport, the user can send a request for deactivating the data sharing tothe data server 112 through the data analysis application 104.Responsive to such a request, the data server 112 deletes the open datareference record 116 corresponding to the report and instructs the cloudstorage 124 to remove the copy of the report data 120. As a result,third-party applications 128 having the open data reference 108 can nolonger access the report data 120. If the user decides to reactivate theopen data reference 108, the data server 112 can repeat the processdescribed above to generate the open data reference record 116, andgenerate and update the report data 120. In one implementation, the sameopen data reference 108 is generated for the same report so that thereport data 120 can be shared with third-party applications 128 thatalready have the open data reference 108 without further operations.

Although not shown in FIG. 1 , the communications between variousdevices and servers can be made through one or more networks. Thenetwork may be a local area network (“LAN”), a wide-area network(“WAN”), the Internet, a cellular network, or any other networkingtopology known in the art that connects the client computing device 102to the data server 112, the data server 112 to the storage server 132,the client computing device 102 to the third-party computing device 130or the third-party computing device 130 to the storage server 132.Additional details about sharing report data 120 through an open datareference 108 are provided below with regard to FIGS. 2-7 .

FIG. 2 depicts an example of a process 200 for generating an open datareference 108 that can be utilized to retrieve shared report data 120,according to certain embodiments of the present disclosure. One or morecomputing devices (e.g., the data server 112) implement operationsdepicted in FIG. 2 by executing suitable program code. For illustrativepurposes, the process 200 is described with reference to certainexamples depicted in the figures. Other implementations, however, arepossible.

At block 202, the process 200 involves receiving a data sharing request134 to share report data 120 of a report generated in the data analysisapplication 104. The data analysis application 104 generates the datasharing request 134 in response to a user submitting such a requestthrough the data analysis application 104. In some examples, the datasharing request 134 includes an identification of the report whosereport data 120 is to be shared, an identification of the user, thereport definition 110 of the report and the open data reference 108 ifthe data analysis application 104 has generated the open data reference108.

At block 204, the process 200 involves obtaining the open data reference108. If the open data reference 108 is generated at the data analysisapplication 104, the open data reference 108 is included in or sentalong with the data sharing request 134. The data server 112 can obtainthe open data reference 108 from the data sharing request 134. If thedata sharing request 134 does not include the open data reference 108,the data server 112 generates the open data reference 108 for thereport. The data server 112 or the data analysis application 104generates the open data reference 108 by hashing data such as the reportidentification, the user identification, and other information. Thegenerated hash value can be used as the file name of the shared reportdata 120. The open data reference 108 further includes informationregarding the location of the shared report data 120 and a tool forretrieving it. As such, the open data reference 108 can be furthergenerated based on information such as the availability and capacity ofcloud storage 124 used for storing the report data, the network locationof the storage server 132 managing the cloud storage 124, the protocolsupported by the storage server 132, and so on.

At block 206, the process 200 involves generating data queries 114 thatcan be utilized to generate the report data 120 for the report. In oneexample, the data server 112 generates the data queries 114 by executinga model code 106 that is the same as the model code utilized by the dataanalysis application 104 at the data analysis application 104. In someconfigurations, the data server 112 is configured with a proper run-timeenvironment for the model code 106 so that it can be executed in anenvironment that is different from the data analysis application 104.For example, a Node.js JavaScript run-time environment can be installedand executed on the data server 112 so that the model code 106 writtenin JavaScript can be executed outside of a web browser where the dataanalysis application 104 is executed.

At block 208, the process 200 involves executing the data queries 114 onthe source data 122 to generate the report data 120 to be shared. Atblock 210, the process 200 involves storing the report data 120 on cloudstorage 124 as specified by the location information in the open datareference 108. The data server 112 can generate and store the reportdata 120 in multiple formats, such as a JSON file, a comma-separatedvalues (CSV) file, or an XML file. A third-party application 128 can usethe open data reference 108 to retrieve the report data 120 in differentformats. A detailed example of using and retrieving the report data 120via the open data reference 108 is provided with regard to FIG. 6 .

At block 212, the process 200 involves determining whether to update thereport data 120. The data server 112 makes such a determination bydetermining whether a pre-determined time point has arrived. Forexample, the data server 112 can be configured to update the report data120 periodically, e.g. every 5 minutes. Once the next 5-minutes timepoint has arrived, the data server 112 determines that the report data120 should be updated. The data server 112 can also determine to updatethe report data 120 when a specific event has occurred. For instance,the data server 112 can determine to update the report data 120 if anunexpected power outage has occurred at the data server 112 and power isrestored, or at a specific time on a specific day as specified by theuser or the data server 112.

If, at block 212, the data server 112 determines that the report data120 is to be updated, the process 200 repeats the operations at blocks206-212 as described above. If the data server 112 determines that thereport data 120 does not need to be updated, for example, by receivingan instruction from the data analysis application 104 that no updatesneed to be performed, the process 200 ends.

FIGS. 3A-3C depict examples of flow diagrams that show interactionsbetween various entities involved in the data sharing process, accordingto certain embodiments of the present disclosure. In particular, theprocess 300A illustrates aspects of the data server 112; the process300B illustrates aspects of the client computing device 102 or morespecifically, the data analysis application 104; the process 300Cillustrates aspects of the data cloud storage 124 and the process 300Dillustrates the aspects of a third-party computing device 130. Theprocesses 300A-300D will be described together below.

At block 302, the process 300B involves receiving a user log-in requestto the data analysis application 104 along with user credentials. Theclient computing device 102 sends the user credentials to the dataserver 112. At block 332, the process 300A involves authenticating theuser based on the received user credentials. Upon authentication, thedata server 112 sends a confirmation to the client computing device 102and the data analysis application 104 logs in the user into the dataanalysis application 104 under his or her account.

At block 304, the process 300B involves receiving the report definition110 for a report and generating data queries 114 based on the reportdefinition 110. For example, a user can specify through a user interfaceof the data analysis application 104 various business rules and criteriaassociated with the report to generate the report definition 110. Thedata analysis application 104 executes a model code 106 based on thereport definition 110 to determine the data queries 114. An example ofthe report definition 110 and its corresponding data query 114 are shownin Table 1. The client computing device 102 further sends the dataqueries 114 and the report definition 110 to the data server 112.

TABLE 1 An example of a report defintion and the corresponding dataquery shown in JSON file format Report definition Data query { { “rsid”:“test.rs”, “rsid”: “test.rs”, “definition”: { “globalFilters”: [“workspaces”: [ { { “type”: “dateRange”, “id”: “767B79BC-FE1E-D9DA-“dateRange”: “2019-05- 3DC7-1B21EBBE6FC8”, 01T00:00:00.000/2019-06-“panels”: [ 01T00:00:00.000” { } “id”: “576A9886-631C-C5D7- ],14F8-0F2D73C1406E”, “metricContainer”: { “dateRange”: { “metrics”: [“id”: “thisMonth”, { “_—entity_—”: true, “columnId”: “0”, “type”:“DateRange”, “id”: “metrics/visits” “_—metaData_—”: { }, “name”: “Thismonth” { } “columnId”: “1”, }, “id”: “metrics/occurrences”, “name”:“Freeform”, “sort”: “desc” “subPanels”: [ } { ] “id”:“A50EE09C-54D0-B434- }, F981-486A156FA53C”, “dimension”:“variables/page”, “linkedSourceId”: “”, “settings”: { “reportlet”: {“countRepeatInstances”: true, “columnTree”: { “limit”: 5, “id”:“5497D11B-84A4- “page”: 0 D174-3431-63E57938DBBD”, }, “nodes”: [“statistics”: { { “functions”: [ “id”: “5AB131E7-05BF- “col-max”,7877-A5B1-86643DE2A41A”, “col-min” “component”: { ] “id”:“metrics/visits”, } “type”: “Metric”, } “_—metaData_—”: { “name”:“Visits” } }, “name”: “Visits”, “nodes”: [ ] }, { “id”: “4776BDF5-A68C-AFFE-8E34-944300FECD93”, “component”: { “id”: “metrics/occurrences”,“type”: “Metric”, “_—metaData_—”: { “name”: “Occurrences” } }, “name”:“Occurrences”, “nodes”: [ ] } ] }, “freeformTable”: {“alignDatesForTimeDimension”: true, “breakdowns”: [ ], “dimension”: {“id”: “variables/page”, “type”: “Dimension”, “_—metaData_—”: { “name”:“Page” } }, “pagination”: { “currentPage”: 0, “viewBy”: 5 }, “search”: {“operator”: “AND”, “rules”: [ ] }, “settings”: { “breakdownByPosition”:false, “rowBasedPercentages”: false, “totalsType”: “allVisits” },“sort”: { “asc”: false, “columnId”: “4776BDF5-A68C-AFFE-8E34-944300FECD93”, “labelColumn”: false }, “statistics”: {“functions”: [ ], “ignoreZeros”: true } }, “type”: “FreeformReportlet”}, “type”: “genericSubPanel”, “visible”: true, “visualizationIndex”: 1 }] } ] } ] } }

At block 334, the data server 112 receives the data queries 114 and thereport definition 110. At block 336, the data server 112 executes thedata queries 114 on the source data 122 to obtain the report data 120.The data server 112 returns the report data 120 to the client computingdevice 102 so that the data analysis application 104 can display in theuser interface for the user at block 306. At block 308, the clientcomputing device 102 receives a request from the user, e.g. through theuser interface of the data analysis application 104, to create an openreference 108 in order to share the report data 120 for the report thatis being displayed in the data analysis application 104. In response toreceiving the request from the user, the data analysis application 104generates and sends a data sharing request 134 to the data server 112.As described above, the data sharing request 134 can include theidentification of the user, the identification of the report, the reportdefinition 110 and other information.

At block 338, the data server 112 creates an open data reference 108 forthe report data 120 to be shared. In some configurations, the createdopen data reference 108 is specific for the user and the report. Inother words, if two different users each request to create an open datareference 108 for the same report, two different open data references108 will be created. Similarly, if a user wants to share the report data120 for two reports, the data analysis application 104 sends twoseparate data sharing requests 134 and the data server 112 creates twoseparate open data references 108.

In one example, the data server 112 generates the open data reference108 by hashing data such as the report identification, the useridentification, and other information. The data server 112 sends thegenerated open data reference 108 to the data analysis application 104.At block 310, the data analysis application 104 shares the open datareference 108 with other applications or devices, either through theuser copying and pasting the open data reference 108 or by the dataanalysis application 104 automatically sending the open data reference108 according to certain configurations.

At block 340, the data server 112 creates an open data reference record116 to record and maintain information associated with the open datareference 108. FIG. 4 depicts an example of a data structure for theopen data reference records 116A-116C, which may be referred to hereinindividually as an open data reference record 116 or collectively as theopen data reference records 116. In this example, an open data referencerecord 116 is created for each open data reference 108. The open datareference record 116 includes a report identification 412 to identifythe report for which the open data reference 108 is generated. The opendata reference record 116 further includes the report definition 110 ofthe report and a user identification 414, such as the account number ora user name, of the user who requested the open data reference 108.

The information in the open data reference record 116, such as the useridentification 414, the report identification 412, and the reportdefinition 110, can be obtained from the data sharing request 134. Ifthe user updates the report definition 110 through the data analysisapplication 104, the data analysis application 104 sends the updatedreport definition 110 to the data server 112. The data server 112, inturn, updates the report definition 110 stored in the open datareference record 116. The open data reference record 116 furtherincludes the generated open data reference 108.

At block 342, the data server 112 generates one or more data queries forobtaining the report data 120. In one example, the data server 112executes a model code 106 based on the report definition 110 to generatethe data query. At block 346, the data server 112 executes the generatedquery on the source data 122 to obtain the report data 120. At block348, the data server 112 sends the report data 120 to the cloud storage124 as specified in the open data reference 108 and instructs the cloudstorage 124 to store the report data 120 at a location referenced in theopen data reference 108.

At block 362, the cloud storage 124 receives the report data 120 andstores it in a location as instructed by the data server 112. At block350, the data server 112 determines whether to update the report data120. If so, the data server 112 repeats the operations in blocks 342-348to generate updated report data 120 and to send it to the cloud storageto replace the existing version stored thereupon.

At block 372, a third-party computing device 130 receives the open datareference 108 distributed by the user through the client computingdevice 102 or another device. At block 374, the third-party computingdevice 130 requests the shared report data 120 using the open datareference 108. The open data reference 108 directs the request of thethird-party computing device 130 to the cloud storage 124. At block 364,the cloud storage 124 receives the request and at block 366, the cloudstorage 124 retrieves and sends the requested report data 120 back tothe third-party computing device 130 over the network. At block 376, thethird-party computing device 130 receives and consumes the report data120 by, for example, displaying it, integrating it into anotherapplication, or the combination thereof. The third-party computingdevice 130 may also be configured to periodically retrieve the reportdata 120 from the cloud storage 124 to obtain the most recent reportdata 120.

At block 312, the client computing device 102 sends a request to thedata server 112 to de-activate the open data reference 108, for example,in response to receiving user input requesting the deactivation. Atblock 352, the data server 112 receives the request and, at block 354,removes the open data reference record 116 corresponding to thedeactivated open data reference 108. The data server 112 furtherinstructs the cloud storage 124 to delete the report data 120 storedthere. At block 314, the client computing device 102 requests the dataserver 112 to re-activate the open data reference 108, for example, inresponse to receiving user input requesting the reactivation. At block356, the data server 112 re-generates the open data reference 108. Inone example, the re-generated open data reference 108 is the same as theprevious open data reference 108 generated for the same user and thesame report. The data server 112 repeats the operations involved inblocks 340-350 to generate the report data 120 for sharing.

By regenerating the same open data reference 108, the user does not needto re-send the open data reference 108 to the third-party applicationswith which the report data 120 was previously being shared. This reducesthe consumption of the communication bandwidth and computing resourcesat the data analysis application 104, especially for scenarios where alarge number of third-party computing devices 130 are involved. If theuser wants to prevent previous third-party computing devices 130 fromhaving access to the report data 120, the user can create a new reportwith a different report identification but the same content. For thisnew report, the data server 112 would generate a different open datareference 108 and only those third-party computing devices 130 havingthe new open data reference 108 have access to the report data 120.

FIG. 5 depicts an example of a user interface (UI) 500 presented in thedata analysis application 104 for displaying report data in variousreports. The UI 500 includes multiple panels 512-516, each panelrepresenting report data for a report. For example, panel 512 isconfigured to present the report data for a report on top referringdomains. Panel 514 is configured to present the report data for a reporton top landing pages and panel 516 is configured to present report datafor a report on visits over time. If a user decides to share the reportdata 120 of the report shown in panel 514, the user requests an opendata reference 108 by interacting with the panel 514. For example, theuser can right click on the panel 514 to bring up a menu and select anoption for creating an open data reference 108. Alternatively, oradditionally, the user can click on a different type of user interfacecontrol to create the open data reference 108.

In response to the user's request, the data analysis application 104generates and presents a box 504 displaying an open data reference 502generated for the report shown in panel 514. The user can copy the opendata reference 502 and send it to other applications or devices. Inanother example, the data analysis application 104 can be configured toprovide functionalities that allow the user to share the open datareference 502 with other applications or devices, such as through emailsor messages.

FIG. 6 depicts an example of a user interface 600 of a third-partyapplication 128 that utilizes an open data reference 108 to retrievereport data 120 and integrate it into the third-party application 128.The UI 600 includes two windows: window 602 displays the source code ofthe third-party application 128, and window 604 displays the executionresults of the third-party application 128. In the example shown in FIG.6 , the open data reference 502 generated in UI 500 is copied and pastedinto the source code of the third-party application 128 shown in window602. In this example, the open data reference 108 is a URL link and aCSV file format of the report data 120 is requested. Following the URL,a copy of the report data 120 is retrieved from the cloud storage 124.Window 604 shows the results generated based on the retrieved data.Because the report data 120 stored on the cloud storage 124 is updatedperiodically, the results shown in window 604 is also up to date. Asdiscussed above, if the user modifies the report in the data analysisapplication 104, the report data 120 stored on the cloud storage 124will be updated by the data server 112 and the retrieved report data 120by the third-party application 128 will also be updated.

As can be seen from the example shown in FIG. 6 , certain embodimentspresented herein allow users to easily access report data of a reportthrough an open data reference. Insteading of using complicated datasharing tools such as API calls, the data sharing presented hereinutilizes an open data reference that includes a user familiar object,such as a URL, which a user already knows, or can quickly learn, how touse. This improved interface allows for rapidly accessing and processingreport data by third-party applications and systems regardless of howcomplicated the report or the report data is.

Although the above examples describe that the user requests the opendata reference 108 through a user interface of the data analysisapplication 104, the open data reference 108 can be generated by thedata analysis application 104 without the user operating through a userinterface. In addition, authentication of the user is performed at thetime the user logs into the data analysis application 104. No additionalauthentication needs to be performed when the user requests the opendata reference 108 or when the third-party application 128 retrievesthat report data 120. As such, the open data reference 108 isunauthenticated and can be used to publicly share the report data 120without revealing the underlying source data 122. In addition, by usingthe deterministic open data reference 108, third-party applications 128can directly obtain the report data 120 without the need to repeat theprocess of generating the report data 120.

Example of a Computing System for Implementing Certain Embodiments

Any suitable computing system or group of computing systems can be usedfor performing the operations described herein. For example, FIG. 7depicts an example of the computing system 700. The implementation ofcomputing system 700 could be used for one or more of a client computingdevice 102 or a data server 112. In other embodiments, a singlecomputing system 700 having devices similar to those depicted in FIG. 7(e.g., a processor, a memory, etc.) combines the one or more operationsand data stores depicted as separate systems in FIG. 1 .

The depicted example of a computing system 700 includes a processor 702communicatively coupled to one or more memory devices 704. The processor702 executes computer-executable program code stored in a memory device704, accesses information stored in the memory device 704, or both.Examples of the processor 702 include a microprocessor, anapplication-specific integrated circuit (“ASIC”), a field-programmablegate array (“FPGA”), or any other suitable processing device. Theprocessor 702 can include any number of processing devices, including asingle processing device.

A memory device 704 includes any suitable non-transitorycomputer-readable medium for storing program code 705, program data 707,or both. A computer-readable medium can include any electronic, optical,magnetic, or other storage device capable of providing a processor withcomputer-readable instructions or other program code. Non-limitingexamples of a computer-readable medium include a magnetic disk, a memorychip, a ROM, a RAM, an ASIC, optical storage, magnetic tape or othermagnetic storage, or any other medium from which a processing device canread instructions. The instructions may include processor-specificinstructions generated by a compiler or an interpreter from code writtenin any suitable computer-programming language, including, for example,C, C++, C#, Visual Basic, Java, Python, Perl, JavaScript, andActionScript.

The computing system 700 executes program code 705 that configures theprocessor 702 to perform one or more of the operations described herein.Examples of the program code 705 include, in various embodiments, thedata analysis application 104, the model code 106, or other suitableapplications that perform one or more operations described herein. Theprogram code 705 may reside in the memory device 704 or any suitablecomputer-readable medium and may be executed by the processor 702 or anyother suitable processor.

In some embodiments, one or more memory devices 704 stores program data707 that includes one or more datasets and models described herein.Examples of these datasets include interaction data, performance data,etc. In some embodiments, one or more of data sets, models, andfunctions are stored in the same memory device (e.g., one of the memorydevices 704). In additional or alternative embodiments, one or more ofthe programs, data sets, models, and functions described herein arestored in different memory devices 704 accessible via a data network.One or more buses 706 are also included in the computing system 700. Thebuses 706 communicatively couples one or more components of a respectiveone of the computing system 700.

In some embodiments, the computing system 700 also includes a networkinterface device 710. The network interface device 710 includes anydevice or group of devices suitable for establishing a wired or wirelessdata connection to one or more data networks. Non-limiting examples ofthe network interface device 710 include an Ethernet network adapter, amodem, and/or the like. The computing system 700 is able to communicatewith one or more other computing devices (e.g., a client computingdevice 102 or a cloud storage 124) via a data network using the networkinterface device 710.

The computing system 700 may also include a number of external orinternal devices, an input device 720, a presentation device 718, orother input or output devices. For example, the computing system 700 isshown with one or more input/output (“I/O”) interfaces 708. An I/Ointerface 708 can receive input from input devices or provide output tooutput devices. An input device 720 can include any device or group ofdevices suitable for receiving visual, auditory, or other suitable inputthat controls or affects the operations of the processor 702.Non-limiting examples of the input device 720 include a touchscreen, amouse, a keyboard, a microphone, a separate mobile computing device,etc. A presentation device 718 can include any device or group ofdevices suitable for providing visual, auditory, or other suitablesensory output. Non-limiting examples of the presentation device 718include a touchscreen, a monitor, a speaker, a separate mobile computingdevice, etc.

Although FIG. 7 depicts the input device 720 and the presentation device718 as being local to the computing device, other implementations arepossible. For instance, in some embodiments, one or more of the inputdevice 720 and the presentation device 718 can include a remoteclient-computing device that communicates with the computing system 700via the network interface device 710 using one or more data networksdescribed herein.

General Considerations

Numerous specific details are set forth herein to provide a thoroughunderstanding of the claimed subject matter. However, those skilled inthe art will understand that the claimed subject matter may be practicedwithout these specific details. In other instances, methods,apparatuses, or systems that would be known by one of ordinary skillhave not been described in detail so as not to obscure claimed subjectmatter.

Unless specifically stated otherwise, it is appreciated that throughoutthis specification discussions utilizing terms such as “processing,”“computing,” “calculating,” “determining,” and “identifying” or the likerefer to actions or processes of a computing device, such as one or morecomputers or a similar electronic computing device or devices, thatmanipulate or transform data represented as physical electronic ormagnetic quantities within memories, registers, or other informationstorage devices, transmission devices, or display devices of thecomputing platform.

The system or systems discussed herein are not limited to any particularhardware architecture or configuration. A computing device can includeany suitable arrangement of components that provide a result conditionedon one or more inputs. Suitable computing devices include multipurposemicroprocessor-based computer systems accessing stored software thatprograms or configures the computing system from a general purposecomputing apparatus to a specialized computing apparatus implementingone or more embodiments of the present subject matter. Any suitableprogramming, scripting, or other type of language or combinations oflanguages may be used to implement the teachings contained herein insoftware to be used in programming or configuring a computing device.

Embodiments of the methods disclosed herein may be performed in theoperation of such computing devices. The order of the blocks presentedin the examples above can be varied—for example, blocks can bere-ordered, combined, and/or broken into sub-blocks. Certain blocks orprocesses can be performed in parallel.

The use of “adapted to” or “configured to” herein is meant as open andinclusive language that does not foreclose devices adapted to orconfigured to perform additional tasks or steps. Additionally, the useof “based on” is meant to be open and inclusive, in that a process,step, calculation, or other action “based on” one or more recitedconditions or values may, in practice, be based on additional conditionsor values beyond those recited. Headings, lists, and numbering includedherein are for ease of explanation only and are not meant to belimiting.

While the present subject matter has been described in detail withrespect to specific embodiments thereof, it will be appreciated thatthose skilled in the art, upon attaining an understanding of theforegoing, may readily produce alternatives to, variations of, andequivalents to such embodiments. Accordingly, it should be understoodthat the present disclosure has been presented for purposes of examplerather than limitation, and does not preclude the inclusion of suchmodifications, variations, and/or additions to the present subjectmatter as would be readily apparent to one of ordinary skill in the art.

The invention claimed is:
 1. A method in which one or more processingdevices perform operations comprising: generating an open data referencerecord for an open data reference specifying a location for storingreport data associated with a report, the open data reference recordcomprising an identification of the report, the open data reference, anda report definition of the report that describes how report dataassociated with a report is generated; generating a data query based onthe report definition; executing the data query on source data stored ina data store to obtain the report data; causing the report data returnedby the data query to be stored on a storage device at the locationspecified by the open data reference, wherein the report data isretrievable via a network using the open data reference for integrationwithin a third-party application; and causing the report data stored onthe storage device to be replaced with updated report data, the updatedreport data being generated by executing, on the source data, an updateddata query generated based on the report definition of the report storedin the open data reference record for the open data reference.
 2. Themethod of claim 1, further comprising: receiving, from an applicationexecuting on a client computing device, a request to generate the opendata reference, wherein the request to generate an open data referenceis submitted through a user interface presenting the report data on theclient computing device; and in response to receiving the request,generating the open data reference and transmitting the open datareference to the client computing device.
 3. The method of claim 1,wherein generating the data query based on the report definitioncomprises executing a model code based on the report definition togenerate the data query, wherein a copy of the model code is stored andconfigured to be executed on a client computing device to generate adata query for retrieving the report data.
 4. The method of claim 3,wherein the model code comprises code written in JavaScript andexecutable in a web browser on the client computing device, and whereinexecuting the model code comprises executing the model code in a node.jsenvironment.
 5. The method of claim 1, wherein the open data referenceto the report data associated with the report is generated by hashing atleast one or more of an identification of the report and anidentification of a user requesting the open data reference.
 6. Themethod of claim 1, wherein the open data reference to the report data ispublic and usable to retrieve the report data stored on the storagedevice without authentication.
 7. The method of claim 1, furthercomprising receiving the open data reference from a client computingdevice.
 8. The method of claim 7, further comprising: responsive toreceiving an instruction to deactivate the open data reference, deletingthe open data reference record for the open data reference; and causingthe updated report data stored on the storage device to be removed. 9.The method of claim 8, further comprising: responsive to receiving aninstruction to re-activate the open data reference, re-generating theopen data reference record for the open data reference; generating a newdata query based on the report definition; executing the new data queryon the source data stored in the data store to obtain a new version ofthe report data; and storing the new version of the report data on thestorage device, wherein the new version of the report data isretrievable through the network via the open data reference.
 10. Asystem comprising: a processing device; and a non-transitorycomputer-readable medium communicatively coupled to the processingdevice, wherein the processing device is configured to execute programcode stored in the non-transitory computer-readable medium and therebyperform operations comprising: generating an open data reference recordfor an open data reference specifying a location for storing report dataassociated with a report, the open data reference record comprising anidentification of the report, the open data reference, and a reportdefinition of the report that describes how report data associated witha report is generated; generating a data query based on the reportdefinition; executing the data query on source data stored in a datastore to obtain the report data; causing the report data returned by thedata query to be stored on a storage device at the location specified bythe open data reference, wherein the report data is retrievable via anetwork using the open data reference for integration within athird-party application; and causing the report data stored on thestorage device to be replaced with updated report data, the updatedreport data being generated by executing, on the source data, an updateddata query generated based on the report definition of the report storedin the open data reference record for the open data reference.
 11. Thesystem of claim 10, wherein the operations further comprise: receiving,from an application executing on a client computing device, a request togenerate the open data reference; and in response to receiving therequest, generating the open data reference and transmitting the opendata reference to the client computing device.
 12. The system of claim10, wherein the open data reference is generated by hashing at least oneor more of an identification of the report and an identification of auser requesting the open data reference.
 13. The system of claim 10,wherein the operations further comprise receiving the open datareference from a client computing device.
 14. The system of claim 13,wherein the operations further comprise: responsive to receiving aninstruction to deactivate the open data reference, deleting the opendata reference record for the open data reference; and causing theupdated report data stored on the storage device to be removed.
 15. Thesystem of claim 14, wherein the operations further comprise: responsiveto receiving an instruction to re-activate the open data reference,re-generating the open data reference record for the open datareference; generating a new data query based on the report definition;executing the new data query on the source data stored in the data storeto obtain a new version of the report data; and storing the new versionof the report data on the storage device, wherein the new version of thereport data is retrievable through the network via the open datareference.
 16. A non-transitory computer-readable medium having programcode stored thereon, the program code executable by one or moreprocessing devices for performing operations comprising: generating anopen data reference record for an open data reference specifying alocation for storing report data associated with a report, the open datareference record comprising an identification of the report, the opendata reference, and a report definition of the report that describes howreport data associated with a report is generated; generating a dataquery based on the report definition; executing the data query on sourcedata stored in a data store to obtain the report data; causing thereport data returned by the data query to be stored on a storage deviceat the location specified by the open data reference, wherein the reportdata is retrievable via a network using the open data reference forintegration within a third-party application; and causing the reportdata stored on the storage device to be replaced with updated reportdata, the updated report data being generated by executing, on thesource data, an updated data query generated based on the reportdefinition of the report stored in the open data reference record forthe open data reference.
 17. The non-transitory computer-readable mediumof claim 16, wherein generating the data query based on the reportdefinition comprises executing a model code based on the reportdefinition to generate the data query, wherein a copy of the model codeis stored and configured to be executed on a client computing device togenerate a data query for retrieving the report data presented in a userinterface on the client computing device.
 18. The non-transitorycomputer-readable medium of claim 17, wherein the model code comprisescode written in JavaScript and executable in a web browser on the clientcomputing device, and wherein executing the model code comprisingexecuting the model code in a node.js environment.
 19. Thenon-transitory computer-readable medium of claim 16, wherein theoperations further comprise: responsive to receiving an instruction todeactivate the open data reference, deleting an open data referencerecord for the open data reference; and causing the updated report datastored on the storage device to be removed.
 20. The non-transitorycomputer-readable medium of claim 19, wherein the operations furthercomprise: responsive to receiving an instruction to re-activate the opendata reference, re-generating the open data reference record for theopen data reference; generating a new data query based on the reportdefinition; executing the new data query on the source data stored inthe data store to obtain a new version of the report data; and storingthe new version of the report data on the storage device, wherein thenew version of the report data is retrievable through the network viathe open data reference.